#pragma once
#include<math.h>
#include<iomanip>
#include<stdlib.h>
#include<windows.h>
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<fstream>
#include <QtWidgets/QMainWindow>
#include "ui_QtWidgetsApplication1.h"
#include<qpushbutton.h>
#include <QLineEdit>
#include<qimage.h>
#include <QFileDialog>
#include <QLabel>
#include <QTextCodec>
#include <QMessageBox>
#pragma pack(push)
#pragma pack(1)
extern int biBitCount;
class bImage : public QMainWindow
{
    Q_OBJECT
public:
    bImage(); //无参数的构造函数，创建行列都为零的Image对象
    bImage(int h, int w); //构造函数重载，创建h行，w列的Image对象
    bImage(int h, int w, unsigned char val); //构造函数重载，创建的图像像素值都为val;
    bImage(char* ImageName); //构造函数重载，利用文件名从硬盘加载图像文件成为Image对象;
    bImage(const bImage& im); //拷贝构造函数;
    ~bImage(); //析构函数;
    void ReadBMP(char* filename); //从BMP文件中读入图像数据;
    void WriteBMP(char* filename); //将图像数据保存为BMP图像文件;
    void ReadText(char* filename); //从文本文件中读入图像数据;
    void WriteText(char* filename); //将图像数据保存为文本文件;
    void Flip(int code); //图像的翻转; 根据code的值：0:左右翻转，1:上下翻转;
    void Resize(int code); //图像的缩放;根据code的值：0:缩小一倍，1:放大一倍;
    void Crop(int x1, int y1, int x2, int y2);//裁剪点(x1,y1)到点(x2,y2)的图像
    void Rotate(int degree);//图像旋转的函数（简单起见，旋转角度为90度的整数倍）
    void hui();
private:
    unsigned char** data;
    int height;
    int width;
};
class QtWidgetsApplication1 : public QMainWindow
{
    Q_OBJECT

public:
    QtWidgetsApplication1(QWidget *parent = Q_NULLPTR);
    void qflip1();
    void qflip2();
    void qread();
    void qresize1();
    void qresize2();
    void qrotate();
    void qCrop();
    void qhui();
private:
    Ui::QtWidgetsApplication1Class ui;
    QPushButton *b;
    QPushButton* b1;
    QPushButton* b2;
    QPushButton* b3;
    QPushButton* b4;
    QPushButton* b5;
    QString file;
    //QLabel* abel;
    QImage* p;
    bImage *c;
};

